%{
#include <stdio.h>
%}

%token T_PROGRAMA
%token T_INTEIRO
%token T_ESCREVA
%token T_TEXTO
%token T_INICIO
%token T_FIM
%token T_IDENTIFICADOR
%token T_VAR
%token T_DELIMITADOR
%token T_OPERADOR
%token T_ABRE_CHAVES
%token T_DOIS_PONTOS
%token T_FECHA_CHAVES


%start programa
%%

programa:
	T_PROGRAMA T_IDENTIFICADOR
	corpo
	;

corpo:
	instrucao_simples | instrucao_estruturada
	;
	
procedimento:
	T_PROCEDIMENTO T_IDENTIFICADOR parametros dec-list T_INICIO corpo T_FIM T_DELIMITADOR
	;

parametros:
	expressao | T_IDENTIFICADOR
	;

dec-list:
	parte-definicao-constantes parte-definicao-tipos parte-definicao-variaveis
	;

tipo: tipo-simples | tipo-estruturado
	;

funcao:
	T_FUNCAO T_IDENTIFICADOR parametros tipo dec-list T_INICIO corpo T_FIM T_DELIMITADOR
	;

vetor: T_IDENTIFICADOR T_DOIS_PONTOS T_VETOR  T_DE tipo
	;

tamanho:
	T_INTEIRO
	;


/*
expressao:
	(T_IDENTIFICADOR | T_INTEIRO) operacao+
	;
*/
%%

int yyerror(char *s) {
	printf("yyerror %s\n", s);
}

int main() {
	yyparse();
}
